package TDALista;

/**
 * Nodo para lista doblemente enlazada
 * @author Jordan
 *
 * @param <T>
 */
public class NodoD<T> implements Position<T> {

	private T elem;
	private NodoD<T> nanterior, nsiguiente;
	
	public NodoD(T elemento){
		elem=elemento;
		nanterior=nsiguiente=null;
	}
	
	/**
	 * constructor generico, asigna elemento nulo, y enlaces a siguiente y anterior en nulo.
	 */
	public NodoD() {
		elem=null;
		nanterior=nsiguiente=null;
	}

	public NodoD(T e, NodoD<T> anterior, NodoD<T> siguiente) {
		elem=e;
		nanterior=anterior;
		nsiguiente=siguiente;
	}

	@Override
	public T getElement() {
		return elem;
	}

	@Override
	public T element() {
		return getElement();
	}

	/**
	 * retorna el elemento anterior
	 * @return
	 */
	public NodoD<T> getNanterior() {
		return nanterior;
	}

	/**
	 * asigna el elemento anterior
	 * @param nanterior
	 */
	public void setNanterior(NodoD<T> nanterior) {
		this.nanterior = nanterior;
	}

	/**
	 * retorna el elemento siguiente
	 * @return
	 */
	public NodoD<T> getNsiguiente() {
		return nsiguiente;
	}

	/**
	 * asigna el elemento siguiente
	 * @param nsiguiente
	 */
	public void setNsiguiente(NodoD<T> nsiguiente) {
		this.nsiguiente = nsiguiente;
	}

	/**
	 * asigna el elemento al nodo
	 * @param elem
	 */
	public void setElem(T elem) {
		this.elem = elem;
	}
	
	

}
